package com.zs.letcode.hash_table;

import java.util.Arrays;
import java.util.Collections;
import java.util.HashSet;
import java.util.Set;

/**
 * 宝石与石头
 * 给定字符串J代表石头中宝石的类型，和字符串S代表你拥有的石头。S中每个字符代表了一种你拥有的石头的类型，你想知道你拥有的石头中有多少是宝石。
 * <p>
 * J中的字母不重复，J和S中的所有字符都是字母。字母区分大小写，因此"a"和"A"是不同类型的石头。
 * <p>
 * 示例 1:
 * <p>
 * 输入: J = "aA", S = "aAAbbbb"
 * 输出: 3
 * 示例 2:
 * <p>
 * 输入: J = "z", S = "ZZ"
 * 输出: 0
 * 注意:
 * <p>
 * S和J最多含有50个字母。
 * J中的字符不重复。
 * 相关标签
 * 哈希表
 * 字符串
 * <p>
 * 作者：力扣 (LeetCode)
 * 链接：https://leetcode-cn.com/leetbook/read/hash-table/xx2a0c/
 * 来源：力扣（LeetCode）
 * 著作权归作者所有。商业转载请联系作者获得授权，非商业转载请注明出处。
 *
 * @author madison
 * @description
 * @date 2021/7/3 10:11
 */
public class Chapter16 {
    public static void main(String[] args) {

    }

    private static class Solution {
        public int numJewelsInStones(String jewels, String stones) {
            int count = 0;
            for (int i = 0; i < stones.length(); i++) {
                if (jewels.indexOf(String.valueOf(stones.charAt(i))) > -1) {
                    count++;
                }
            }
            return count;
        }


        public int numJewelsInStones1(String jewels, String stones) {
            int jewelsCount = 0;
            Set<Character> jewelsSet = new HashSet<>();
            for (int i = 0; i < jewels.length(); i++) {
                char jewel = jewels.charAt(i);
                jewelsSet.add(jewel);
            }
            for (int i = 0; i < stones.length(); i++) {
                char stone = stones.charAt(i);
                if (jewelsSet.contains(stone)) {
                    jewelsCount++;
                }
            }
            return jewelsCount;
        }
    }
}
